﻿using System.Collections.Generic;

namespace OestsCommon.Model
{
    /// <summary>
    /// 数据包
    /// </summary>
    /// <typeparam name="T1"></typeparam>
    /// <typeparam name="T2"></typeparam>
    public class DP<T1, T2>
    {
        private T1 _value1;
        private T2 _value2;

        /// <summary>
        /// 2种类型的数据包
        /// </summary>
        public DP(T1 t1, T2 t2)
        {
            _value1 = t1;
            _value2 = t2;
        }
        /// <summary>
        /// 数据包
        /// </summary>
        public DP()
        {

        }

        public T1 Value1
        {
            get { return _value1; }
            set { _value1 = value; }
        }

        public T2 Value2
        {
            get { return _value2; }
            set { _value2 = value; }
        }
    }
    public class DP<T1, T2, T3>
    {
        private T1 _value1;
        private T2 _value2;
        private T3 _value3;
        /// <summary>
        /// 数据包
        /// </summary>
        public DP(T1 t1, T2 t2, T3 t3)
        {
            _value1 = t1;
            _value2 = t2;
            _value3 = t3;
        }
        /// <summary>
        /// 3种类型的数据包
        /// </summary>
        public DP()
        {

        }

        public T1 Value1
        {
            get { return _value1; }
            set { _value1 = value; }
        }

        public T2 Value2
        {
            get { return _value2; }
            set { _value2 = value; }
        }
        public T3 Value3
        {
            get { return _value3; }
            set { _value3 = value; }
        }
    }


    /// <summary>
    /// 专门为学员转发协议定制的数据对象
    /// </summary>
    public class TransmitObject
    {
        /// <summary>
        /// 发送消息用户ID
        /// </summary>
        public int SendUserId;

        /// <summary>
        /// 接收用户ID数组
        /// </summary>
        public List<int> ReceiveUsers;

        /// <summary>
        /// 转发数据
        /// </summary>
        public object Data;

    }

    public class IntString
    {
        public int Int { get; set; }
        public string String { get; set; }

        public IntString(int n, string str)
        {
            Int = n;
            String = str;
        }
        public IntString() { }

    }

    public class Int2String
    {
        public int Int1 { get; set; }
        public int Int2 { get; set; }
        public string String { get; set; }

        public Int2String(int n1, int n2, string str)
        {
            Int1 = n1;
            Int2 = n2;
            String = str;
        }
        public Int2String() { }

    }
    public class IntString2
    {
        public int Int { get; set; }
        public string String1 { get; set; }
        public string String2 { get; set; }
        public IntString2(int n1, string str1, string str2)
        {
            Int = n1;
            String1 = str1;
            String2 = str2;
        }
        public IntString2() { }
    }

    public class Int3String
    {
        public int Int1 { get; set; }
        public int Int2 { get; set; }
        public int Int3 { get; set; }
        public string String { get; set; }
        public Int3String(int n1, int n2, int n3, string str)
        {
            Int1 = n1; Int2 = n2; Int3 = n3;
            String = str;
        }
        public Int3String() { }
    }
    public class Int2
    {
        public int Int0 { get; set; }
        public int Int1 { get; set; }

        public Int2(int n, int m)
        {
            Int0 = n;
            Int1 = m;
        }
        public Int2() { }

    }
    public class Int3
    {
        public int Int0 { get; set; }
        public int Int1 { get; set; }
        public int Int2 { get; set; }

        public Int3(int n, int m, int l)
        {
            Int0 = n;
            Int1 = m;
            Int2 = l;
        }
        public Int3() { }

    }
    public class ListInt
    {
        public List<int> List { get; set; }
        public int Int { get; set; }

        public ListInt(List<int> list, int n)
        {
            List = list;
            Int = n;
        }
        public ListInt()
        {
        }
    }

    public class CommonModel
    {
        public int Int { get; set; }
        public object Datas { get; set; }

        public CommonModel(int n, object datas)
        {
            Datas = datas;
            Int = n;
        }
        public CommonModel()
        {
        }
    }

    public class ListInt2
    {
        public List<Int2> List { get; set; }
        public int Int { get; set; }

        public ListInt2(List<Int2> list, int n)
        {
            List = list;
            Int = n;
        }
        public ListInt2()
        {
        }
    }

    public class Struct2<T1, T2>
    {
        private T1 _value1;
        private T2 _value2;

        public Struct2(T1 t1, T2 t2)
        {
            _value1 = t1;
            _value2 = t2;
        }
        public Struct2()
        {

        }

        public T1 Value1
        {
            get { return _value1; }
            set { _value1 = value; }
        }

        public T2 Value2
        {
            get { return _value2; }
            set { _value2 = value; }
        }
    }

    public class Struct3<T1, T2, T3>
    {
        private T1 _value1;
        private T2 _value2;
        private T3 _value3;

        public Struct3(T1 t1, T2 t2, T3 t3)
        {
            _value1 = t1;
            _value2 = t2;
            _value3 = t3;
        }
        public Struct3()
        {

        }

        public T1 Value1
        {
            get { return _value1; }
            set { _value1 = value; }
        }

        public T2 Value2
        {
            get { return _value2; }
            set { _value2 = value; }
        }
        public T3 Value3
        {
            get { return _value3; }
            set { _value3 = value; }
        }
    }
}
